/**
 * 通用卡片渲染器
 * @param {Object} config 配置项
 *   - data: 数据数组
 *   - template: 模板选择器
 *   - container: 容器选择器
 *   - events: 事件绑定配置
 */
window.RuoYiCard = {
    render(config) {
        // 1. 获取模板
        const template = $(config.template).html();
       log.info(config);
        // 2. 渲染数据
        const html = config.data.map(item => {
            item.btnText = item.stockQuantity > 0 ? '立刻抢购' : '已售罄';
            item.disabled = item.stockQuantity <= 0? 'disabled' : '';
            let card = template.replace(/{{(.*?)}}/g, (m, p1) => item[p1]);
            // 处理按钮样式
            if (item.stockQuantity <= 0) {
                card = card.replace('class="btn-buy"', 'class="btn-buy sold-out"');
            }

            if(config.processItem) {
                card = config.processItem(card, item);
            }
            return card;
        }).join('');

        // 3. 插入容器
        $(config.container).html(html);

        // 4. 绑定事件
        if(config.events) {
            Object.keys(config.events).forEach(eventType => {
                $(document).on(eventType, config.events[eventType].selector,
                    function(e) {
                        const handler = config.events[eventType].handler;
                        handler.call(this, $(this).data(), e);
                    });
            });
        }
    }
}